There are a variety of computer applications which require the functions of polling inputs for particular values, waiting until such values are detected, and then branching to perform other functions depending upon the particular value or values detected. Although this functionality can be implemented solely in software, certain applications necessitate the speed provided by dedicated circuitry.
The typical tradeoff for this speed is a lack of fexibility. Hardwired circuitry cannot easily be altered when a particular customer's needs require certain additional or modified functionality. Certain applications, however, would benefit significantly from both speed and a certain degree of programmable flexibility. One such application is a digital, brushless DC motor controller.
Complex control circuitry is often required to detect and decode the rotor position of a DC motor, and to control accurately the speed of that motor. A common method of detecting the motor's rotor position involves the use of "Hall effect sensors." These sensors signal the controller with information distinguishing among the discrete sectors into which the rotor's position is conceptually divided. By sampling the Hall sensor information periodically, a controller can determine the actual speed of the motor, and can then vary that speed accordingly (by adjusting inputs to the motor itself to increase or decrease that speed).
Prior art DC motor controllers (such as the IP3M05 from Integrated Power Semiconductors, Ltd., and the MC33034 from Motorola, Inc.) utilize hardwired circuitry to analyze the Hall sensor information and vary the speed of the motor accordingly. These analog, non-programmable devices utilize linear integrated circuits to perform these functions.
Although these prior art devices are to a limited extent metal mask configurable, none of these devices offers the user the ability to program, for example, customized motor velocity and acceleration profiles, variable Hall state sensor spacing, and customized error or other state detection signals. The flexibility offered by such a user-programmable DC motor controller significantly increases the need for fast polling, branching and waiting logic to enable the user to control the precise speed of the motor under a variety of circumstances, with sufficiently rapid response time.